import { hasContentVirtual, getComposedParent } from '../../commons/dom';

function hiddenContentEvaluate(node, options, virtualNode) {
	const whitelist = [
		'SCRIPT',
		'HEAD',
		'TITLE',
		'NOSCRIPT',
		'STYLE',
		'TEMPLATE'
	];
	if (
		!whitelist.includes(node.nodeName.toUpperCase()) &&
		hasContentVirtual(virtualNode)
	) {
		const styles = window.getComputedStyle(node);
		if (styles.getPropertyValue('display') === 'none') {
			return undefined;
		} else if (styles.getPropertyValue('visibility') === 'hidden') {
			// Check if visibility isn't inherited
			const parent = getComposedParent(node);
			const parentStyle = parent && window.getComputedStyle(parent);
			if (
				!parentStyle ||
				parentStyle.getPropertyValue('visibility') !== 'hidden'
			) {
				return undefined;
			}
		}
	}
	return true;
}

export default hiddenContentEvaluate;
